Businesses and corporations are increasingly providing access to internal resources over a network. Often, a client is provided that communicates with a backend server over a network to access resources. For example, a client or requester agent may communicate with a web server using Hyper Text Transport Protocol (HTTP). The client sends requests that contain an address, such as a Universal Resource Locator (URL), or more generally a Universal Resource Identifier (URI), of a subject resource that can be manipulated by the web server. The URI may refer to static content, such as a static web page or graphic. In these cases, the web server can return the resource to the client. The request may also refer to dynamic content that requires the web server to generate the content in some manner. These requests for dynamic content may require processing by other resources. These requests may be routed to an external program for processing, for example, through a Common Gateway Interface (CGI). How the resource addresses of requests are mapped to the static content, such as files, or the dynamic content such as CGI programs, is defined by the web server configuration. Web servers may also provide other interfaces to external applications to improve the performance of the web server and/or the external program.
The web server may include a gateway that forwards requests for dynamic content to an application server for processing. The application server may receive the request and forward it to a servlet for processing. The application server, which may be implemented as a servlet container, may pass the request to specific servlets based on the URI of the request. For example, a client such as a web browser may send an HTTP GET request to http://example.com/servlets/server1. The web server receives the request and, based on the configuration of the web server, determines that the request should be forwarded to an application server. The application server may pass the request to the server 1 servlet, which processes the request and returns a response.
An object resource such as a static HTML page, or dynamic content provided by a servlet, may address other object resources. For example, an HTML page may refer to a graphic that is rendered on the page in the client's browser. A servlet may refer to another servlet or other content. The addresses used to identify the resources may be an absolute URI or a relative URI. An absolute URI specifies the full address of the resource. A relative URI specifies only a partial address of the resource. The address of the referencing resource, such as the HTML page, is used to construct the absolute URI of the required resource. Using relative addresses allows flexibility in deploying resources of a system. The location of resources may be changed as long as it is in the same relative location to the referencing resources.
A servlet may retrieve application content based on the request, such as, report definitions for describing a report to run against a database. The application content may be stored in a content store. The content store may be a relational database. These report definitions may be used to generate reports by accessing data stores, which may be, for example, relational databases or OLAP cubes. The data stores typically store the businesses' or corporations' information. For example, if the report definition retrieved from the content store describes a sales report, it may access the data stores to retrieve the required sales information.
A servlet may also provide a User Interface (UI) for various functions, such as, the functionality provided by other servlets or components. Servlets that provide a unified point of access to various functionality or information may be referred to as a portal. A portal may construct a UI that includes links to the functionality or resources that are available to the user. When a user clicks on a link of the UI, the particular resource is requested.
The servlet framework may be extended to provide additional functionality. Servlets may be organized into server groups in order to process requests efficiently, or to identify servlets that can access particular resources. Servlets may also be grouped into server groups to support charge-back accounting, allowing a group to pay for the cycles they use on dedicated hardware. For example, a human resources (HR) database may only be available on a limited number of machines. When a servlet receives a request that requires accessing the HR database, it will be forwarded to a servlet in the correct server group, i.e., the server group that has access to the HR database, for processing. Alternatively, the request may be received at the correct server group, in which case the request is processed. The correct server group to process a request may be determined based on user information of the client sending the request, an object of the request, a component used to process the request and configuration information. For example, a request may be received from a user in the HR department. The request may run a report for the user, which is run by a reporting component. An administrator may have provided configuration information, possibly in a database, that specifies a particular server group to use when a user of the human resources department requires using the reporting component.
When migrating from one edition of an application to a new edition, it may be necessary to create a multiple edition environment in which both editions are present. FIG. 1 depicts an exemplary multiple edition environment. In the multiple edition environment 100, two complete implementations co-exist in a side-by-side arrangement. The components of each of the implementations are indicated as being either edition N-1 or N. The environment 100 includes clients 102, 104 that access a web server 106. The web server 106 includes static content 108 for the N-1 edition and static content 110 for the N edition. The web server also includes an N-1 Gateway 112 and an N Gateway 114. The environment 100 further includes two application servers 116, 122, which each include servlets. The application server 116 includes an N-1 servlet 118 and an N servlet 120. The N-1 gateway 112 provides access to the N-1 servlet 118 to clients 102, 104. The N gateway 114 provides access to the N servlet 120 to clients 102, 104. Application server 122 includes an N-1 servlet 124 and an N servlet 126. Servlets can pass requests to other servlets, as indicated by arrow 128. The two editions (i.e., N and N-1) may share a common content store 130 and may access the same data stores 132, 134. The application servers 116, 122 may be provided on a single physical computer or on multiple physical computers. The gateways, services and content manager may be implemented as servlets or servlet modules in a servlet framework. The servlet framework may be a servlet container, such as an Apache TomCat container.
In a multiple edition environment 100 as described above, it is difficult to maintain references to resources across different editions since the addresses of the other editions are not necessarily known to the edition building the request. This makes it difficult to have components of one edition, which are accessed through one gateway, access components of another edition, which are accessed through a different gateway. When the system configuration changes, for example, by adding a new gateway, all of the links to the other editions must be manually updated in the previous editions of the components. It would be advantageous for components accessed through one gateway to be able to resolve a relative address to create a request for a component accessed through another gateway.